/**
 * 给定字符串s，最多删除1个字符，判断能否成为回文字符串
 * @param {string} s 
 */
var validPalindrome = function (s) {
    function isPalindrome(left, right) {
        while (left < right) {
            if (s[left] !== s[right]) {
                return false
            }
            left++
            right--
        }
        return true
    }

    let left = 0
    let right = s.length - 1
    while (left < right) {
        if (s[left] !== s[right]) {
            // 出现不相等给一次机会删除
            // 判断删除当前left和删除当前right的结果
            // 如果两个函数都返回false 说明删除一次也不能成为回文字符串
            return isPalindrome(left + 1, right) || isPalindrome(left, right - 1)
        }
        left++
        right--
    }
    return true
}